package top.yxqz.sprinmvc.requestmap.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @author: 余小小
 * @date: 2023/4/27
 * @description：
 */
@Controller
public class HelloController {
    @RequestMapping("/")
    public String index() {
//        return "forward:/msg/old";
//        return "redirect:/msg/old";
        return "index";
    }

    /**
     * 跳转去hello页面
     * uri: /hello
     *
     * @return value:用来配置访问的路由（资源），数组
     * method：用来配置访问的方式，数组
     */
    @RequestMapping(value = {"/hello", "/hello2"}, method = {RequestMethod.POST, RequestMethod.GET})
    public String hello() {
        return "hello";
    }

    /**
     * 1. “param”：当前请求的参数中必须要携带param参数
     * 2. “！param”：当前请求的参数中必须不能携带param参数
     * 3. "param=value"：当前请求的参数中必须要携带param参数，且值必须是value
     * 4. "param!=value"：当前请求的参数中必须可以不用携带param参数，如果携带了值必须不是value
     * 只要是请求方式中的问题，一般报错都是400错误
     * uri:/hello3
     */
    @RequestMapping(value = "/hello3",
            method = RequestMethod.POST,
            params = {"gender", "!email", "name=yyds", "age!=22"},
            headers = {"host"})
    public String gotohello() {
        return "hello";
    }

    /**
     * ant风格
     * ？:通配，一个字符，除了问号，其他都可以代替
     * /*：一个级别目录
     * /**:多级目录
     */
    @RequestMapping({"/hello4", "/?/hello4", "/hello4/*", "/**/hello4"})
    public String gohello() {
        return "hello";
    }


    /**
     * rest风格
     * uri :/rest/5
     */
    @PostMapping("/rest/{id}")
    public String restHellos(@PathVariable("id") String id) {
        System.out.println(id);
        return "hello";
    }

}
